#ifndef __ISCENEMANAGER_H__
#define __ISCENEMANAGER_H__

#include "CTypes.h"
#include "ISceneNode.h"
#include "IDrawableSceneNode.h"
#include "ISceneGenerator.h"
#include "I3DCameraSceneNode.h"
#include "IFont.h"
#include "IDebugVars.h"
#include "ILightSceneNode.h"

class ISceneManager : public ISceneNode
{
public:
	ISceneManager(ISceneNodeBasicParamsDeclaration):ISceneNode(ISceneNodeBasicParams)	{}
	virtual ~ISceneManager()	{}

	virtual ISceneGenerator *GetSceneGenerator()						    									    = 0;
	virtual IDrawableFaceManager *GetDrawableFaceManager()		    											= 0;
	virtual void SetActive3DCamera(I3DCameraSceneNode *newac)												    = 0;
	virtual I3DCameraSceneNode *GetActive3DCamera()														    	= 0;
	virtual void SetActive2DCamera(I2DCameraSceneNode *newac)										    		= 0;
	virtual I2DCameraSceneNode *GetActive2DCamera()												    			= 0;
	virtual IDebugVars *GetDebugVars()															    			    = 0;

	virtual u32 RenderAll(u32 Time)																		            = 0;

	// Animators
	virtual void AddMoveAnimator(ISceneNode *Node,vector3dvpos PosIni,vector3dvpos PosFin,u32 Time)	        = 0;
	virtual void AddRotationAnimator(ISceneNode *Node,vector3dvpos RotIni,vector3dvpos RotFin,u32 Time)	    = 0;
	virtual void AddScalatorAnimator(ISceneNode *Node,vector3dvpos ScalIni,vector3dvpos ScalFin,u32 Time)	    = 0;
};

POWERLIBRARYENGINE_API ISceneManager *GetSceneManager();
POWERLIBRARYENGINE_API void DeleteSceneManager();
void SetSceneManager(ISceneManager *nv);
#define SceneManager	GetSceneManager()

#endif
